[Amazon Athena] 名前付きクエリとVIEWテーブルの違いを確認しつつ使ってみた
こんにちは、CX事業本部 IoT事業部の若槻です。
今回は、Amazon Athenaの名前付きクエリ(Named Query, Saved Query)とVIEWテーブルの違いを確認しつつ使ってみました。
名前付きクエリ
名前付きクエリ(Named Query, Saved Query)とは、SQLクエリに名前を付けて保存し、コンソールから呼び出して使用できるAmazon Athenaの機能です。
名前付きクエリを使ってみる
Amazon Athenaのマネジメントコンソールで、名前を付けたいSQLクエリを記載したら、[Save as]をクリックします。
//名前付きクエリとしたいSQLクエリ SELECT eventname, dynamodb.approximatecreationdatetime/1000 as unixTimestamp, dynamodb.newimage.deviceid.s as newDeviceId, dynamodb.newimage.devicename.s as newDeviceName, dynamodb.oldimage.deviceid.s as oldDeviceId, dynamodb.oldimage.devicename.s as oldDeviceName FROM "gluedatabase"."gluetable"
[Query name]を指定して、[Save query]をクリックして保存します。
[Saved queries]タブで作成済みの名前付きクエリの一覧を参照できます。先程作成した名前付きクエリを選択します。
名前付きクエリがエディターで開けました。保存したSQLクエリの内容が展開されています。[Run]をクリックして実行します。
クエリが実行でき、クエリ結果が取得できました。
名前付きクエリはコンソールから使うもの
名前付きクエリは、AWS CLIなどのAPIから直接使用することはできません。基本的にはマネジメントコンソールからよく使うSQLクエリを簡単に呼び出せるようにする機能です。
よってAthenaのAWS CLIで利用可能な名前付きクエリに関するコマンドは作成、取得、削除を行うコマンドだけしかありません。
名前付きクエリの作成方法
名前付きクエリは、先程示したマネジメントコンソールからの方法の他に、AWS CLI、CloudFormationからも作成可能です。
VIEWテーブル
VIEWテーブルとは、Glueテーブルの一種で、指定したSQLクエリをデータカタログに論理テーブルとして保存し、SELECTクエリで使用できます。このテーブルに対してSELECTクエリを実行すると指定したSQLクエリが実行された結果が取得できます。
VIEWテーブルを使ってみる
以下のエントリで、Amazon AthenaのマネジメントコンソールからViewテーブルの作成や使用を行っているのでご参照ください。
Amazon Athenaのマネジメントコンソールで、CREATE [ OR REPLACE ] VIEW view_name AS query
という形式でSQLクエリを記載します。今回はgluedatabase
データベースにgluetable_view
という名前でVIEWテーブルを作成します。
CREATE OR REPLACE VIEW "gluedatabase"."gluetable_view" AS SELECT eventname, dynamodb.approximatecreationdatetime/1000 as unixTimestamp, dynamodb.newimage.deviceid.s as newDeviceId, dynamodb.newimage.devicename.s as newDeviceName, dynamodb.oldimage.deviceid.s as oldDeviceId, dynamodb.oldimage.devicename.s as oldDeviceName FROM "gluedatabase"."gluetable"
[Run]をクリックして実行します。
Query successful.
と出力されていれば作成は成功です。またViews一覧に作成したVIEWテーブルが追加されています。
作成したVIEWテーブルに対してSELECTクエリを実行すると、結果を取得できました。
VIEWテーブルはJDBCまたはODBC接続で使うもの
VIEWテーブルが便利に使えるのは、BIツールなどから接続するような場面です。JDBCまたはODBCドライバーでAthena経由でAWS上のデータに接続する際に、VIEWテーブルを指定することにより短いクエリで加工済みのデータを取得できるようになります。
VIEWテーブルの作成方法
VIEWテーブルは、先程示したマネジメントコンソールからの方法の他に、AWS CLI、CloudFormationからも作成可能です。ただしかなり面倒くさいです。
AWS CDKの場合はCfnTable
クラスのコンストラクトを使えば可能です。
参考
- [AWS Glue]ViewテーブルをAthenaで作成・更新してみた | DevelopersIO
- [Boto3 Adv-Cal DAY5]Athenaで集計した結果をローカルに落としてみる | DevelopersIO
- Amazon Athena CloudFormationでSaved Queries(NamedQuery)にクエリーを登録してみる | DevelopersIO
以上